Security system with compliance checking and remediation

ABSTRACT

A security system is provided for use with computer systems. In various embodiments, the security system can analyze the state of security of one or more computer systems to determine whether the computer systems comply with expressed security policies and to remediate the computer systems so that they conform with the expressed security policies. In various embodiments, the security system can receive compliance documents, determine whether one or more computer systems comply with portions of security policies specified in the compliance documents, and take actions specified in the compliance documents to cause the computer systems to comply with the specified security policies. The security system may provide a common, unified programming interface that applications or tools can employ to verify or enforce security policies.

BACKGROUND

Computers have become targets for various types of sophisticated electronic attacks and misuse, such as viruses, “spyware,” “Trojan horses,” denial of service, misuse of business computing resources, misappropriation of data, electronic trespass, “SPAM,” and so forth. Electronic attacks typically target one or more operating system (OS) components, such as OS subsystems, applications, device drivers, services, registries, user accounts, or other resources associated with computer systems.

System administrators may also require computer systems they administer to comply with other requirements, such as requirements imposed by privacy or corporate governance laws. As an example, system administrators may require computer systems to have the latest software patches.

In response to the increasing number of attacks and other requirements, businesses and individuals have adopted various security policies to shield their computers. The security policies may specify software requirements, such as virus protection software, firewall software, monitoring software, SPAM-filtering software, and other security software products; procedures, such as periodic password reset and file system access permissions; and other security-related measures. Although system administrators install, configure, and manage security software products in compliance with security policies, the computer systems they administer may lose compliance when a security policy changes or when a security software product's configuration changes. The computer systems may also no longer be compliant when procedures are not diligently followed, such as when passwords are not reset, files are accessible by more user accounts than the policy permits, malicious code is installed inadvertently and so forth.

In large organizations, system administrators may need to ensure that server computers, desktop computers, handheld computers, and other computer systems comply with various security policies, such as by checking compliance and enforcing security policies regularly. As examples, the system administrators may need to ensure that (1) servers and other computer systems have been updated with the latest “service packs” or other updates; (2) users have access to only files or folders consistent with security policies; (3) user accounts and passwords are managed in a manner that is consistent with relevant security policies, and so forth. System administrators may be responsible for hundreds or even thousands of computer systems. When this is the case, enforcing security policies can be difficult, time-consuming, and even error-prone.

SUMMARY

A security system is provided for checking and enforcing compliance with security policies. The security system can analyze the state of security of one or more computer systems to determine whether the computer systems comply with expressed security policies and to remediate the computer systems so that they conform with the expressed security policies. The security system enables a person to generate a compliance document that specifies (1) checks to be performed to determine whether a computer system complies with a security policy and (2) remedial actions to return the computer system to compliance. The security system can receive compliance documents, determine whether one or more computer systems comply with portions of security policies specified in the compliance documents, and take actions specified in the compliance documents to cause the computer systems to comply with the specified security policies. A compliance document can identify portions of security policies, such as by identifying operating system (OS) components and “state information” relating to the OS components, and may additionally indicate a remediation action that the security system can undertake to cause the OS component to be compliant with the security policies. A remediation action may relate to OS components other than the OS component that the security system has determined is not compliant. The security system may provide a common, unified programming interface that applications or tools can employ to verify or enforce security policies.

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating components associated with a security system in various embodiments.

FIG. 2 is a block diagram illustrating how security compliance can be determined using the security system in some embodiments.

FIG. 3 is a block diagram illustrating operation of the security system in some embodiments.

FIG. 4 is a flow diagram illustrating a verify_compliance routine invoked by the security system in some embodiments.

FIG. 5 is a flow diagram illustrating a convert_document routine invoked by the security system in some embodiments.

FIG. 6 is a flow diagram illustrating a check_compliance routine invoked by the security system in some embodiments.

FIG. 7 is a flow diagram illustrating a compute_remediations routine invoked by the security system in some embodiments.

FIG. 8 is a flow diagram illustrating a remediate routine invoked by the security system in some embodiments.

FIG. 9 is a flow diagram illustrating a generate_report routine invoked by the security system in some embodiments.

DETAILED DESCRIPTION

A security system is provided for checking and enforcing compliance with security policies. In various embodiments, the security system can analyze the state of security of one or more computer systems to determine whether the computer systems comply with expressed security policies and to remediate the computer systems so that they conform with the expressed security policies. The security system enables a person to generate a compliance document that specifies (1) checks to be performed to determine whether a computer system complies with a security policy and (2) remedial actions to return the computer system to compliance. For example, a compliance document can specify to check whether a certain version of antivirus software is currently executing on the computer system and if not, specify the remedial action of starting the execution of the software. The compliance documents may be created by a system administrator of an organization or by third-party providers of security services. The security system may be scheduled to process compliance documents at various times. For example, the security system may be scheduled to process antivirus related compliance documents on a daily basis and anti-spam related compliance documents on a weekly basis. When the security system processes a compliance document, it may take a remedial action when the computer system does not comply. The security system can receive compliance documents, determine whether one or more computer systems comply with portions of security policies the compliance documents specify, and take remediation actions the compliance documents may specify to cause the computer systems to comply with the specified security policies. A compliance document can identify portions of security policies, such as by identifying operating system (OS) components and “state information” relating to the OS components. State information can include configuration states, operation states, performance states, or other attributes of the OS components. A compliance document may additionally indicate a remediation action that the security system can undertake to cause the OS component to be compliant with the security policies. A remediation action may relate to OS components other than the OS component that the security system has determined is not compliant. As an example, when an update to a firewall component is not installed, configured, or operating correctly, the security system may disable one or more OS components, such as an Internet service. The security system can take this action to protect the user or computer until the update can be installed.

In various embodiments, the security system includes a provider interface that compliance applications can employ to interact with OS components, such as to determine whether the OS components comply with one or more security policies. A compliance application is an application that a user, such as a system administrator, may employ to create or provide compliance documents, determine whether one or more computer systems comply with security policies specified in the compliance documents, and otherwise interact with the security system. The provider interface may provide an application program interface (API) that components of the security system may employ, such as to interact with other components. The API may be employed by OS components, applications, tools, and other software so that the software does not need to interact with each OS component separately. Thus, an application developer that employs the provider interface component's API may not need to learn and employ interfaces provided by different OS components to check compliance or cause remediation. Moreover, providing a common API enables system administrators to employ stronger security measures with operating systems they administer because they may not need to administer many OS components separately. System administrators can provide increased privileges to some OS components and reduced privileges to user accounts under which compliance applications execute, as described in further detail below.

In some embodiments, the provider interface may employ APIs provided by various providers to interact with OS components. Examples of providers include a registry provider, a file system provider, a services provider, a firewall provider, and so forth. Each provider may be associated with one or more OS components and can interact with the associated OS components, such as to determine or affect state information. As an example, a file system provider may interact with a file system, e.g., to (1) determine which user accounts have access to various files or folders, (2) set permissions, (3) move or delete files, and so forth.

In various embodiments, the security system can receive compliance documents in various formats, such as a native format supported by the security system or a standard format, such as an Extensible Configuration Checklist Description Format (XCCDF). One or more of these formats may be specified using a human-readable language, such as Extensible Markup Language (XML). Documents specified using XCCDF may include checklists, benchmarks, and configuration information. XCCDF and other similar standards assist security administrators to configure computer systems to comply with security and regulatory compliance requirements. The security system can “consume” these documents and convert them into a native format that can be employed to automatically determine whether a computer system complies with various security policies specified therein and to configure OS components accordingly.

In various embodiments of the security system, some components may operate with high security privileges, such as with an administrative user account, whereas other components may operate with lower security privileges, such as with the privileges of the user that invokes an application that employs the provider interface. As an example, when a user invokes a compliance application, the compliance application may operate with the user's access rights. Users generally cannot access various aspects of an operating system when the operating system has been properly secured, such as device drivers or application files. When the compliance application executes in a properly secured operating environment, it may only receive the user's rights. However, the provider interface component and providers that handle requests from the compliance application may nevertheless operate with higher security privileges, such as with an administrative account, so that the security system can interact with OS components to handle the requests, check compliance, handle remediation actions, and so forth.

Thus, the security system can analyze the state of security of one or more computer systems to determine whether the computer systems comply with expressed security policies and to remediate the computer systems so that they conform with the expressed security policies. The security system thereby automatically enforces security policies easily, accurately, and in a timely manner.

The security system will now be described with reference to the figures. FIG. 1 is a block diagram illustrating components associated with a security system in various embodiments. The security system 100 includes a provider interface component 102; multiple provider components associated with OS components, such as provider 1 104 a, provider 2 104 b, and provider “n” 104 c; a compliance evaluator component 106; a remediation calculator component 108; a remediator component 110; and a report generator component 112. The provider interface component 102 may provide an API that applications, components of the security system, or OS components can employ to interact with the security system. As an example, a compliance application may interact with the security system via the API provided by the provider interface component 102. Each provider component 104 a-104 c interacts and is associated with other components of an OS, such as subsystems. Examples of provider components include a provider component associated with a registry of the OS, a provider component associated with a file system of the OS, a provider component associated with a firewall, and so forth. The provider components may provide an API that the provider interface component can employ to interact with the provider components. Based on these interactions, a provider component can take various actions in relation to the OS components with which the provider component is associated. As an example, a compliance application may interact via a provider interface with a provider component associated with an OS registry to check registry compliance or to undertake remediation actions. The compliance evaluator component 106 can receive compliance documents and cause the production of compliance reports, such as after interacting with the provider interface to determine whether OS components indicated by the compliance document comply with various security policies. The remediation calculator component 108 can identify a set of remediation actions associated with various OS components, such as to cause the security system to bring the computer system into compliance with the compliance document. The remediator component 110 may consume the remediation actions identified by the remediation calculator and invoke provider components via the provider interface, such as to bring an OS component into compliance with the security policy indicated by the compliance document. The remediator component may undertake a remediation action or cause another component to undertake a remediation action. The report generator component 112 can produce various reports and change logs, such as based on compliance reports produced by the compliance evaluator component or remediation results identified by the remediator component. The reports and change logs may be generated based on compliance checks and remediation actions performed by different provider components and operating system components. A provider component can cause an operating system with which it is associated to undergo a remediation action, such as to bring it into compliance with a compliance criterion that is specified in a compliance document.

The computing devices on which the security system operates may include one or more central processing units, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), storage devices (e.g., disk drives), and network devices (e.g., network interfaces). The memory and storage devices are computer-readable media that may store instructions that implement the security system. In addition, the data structures and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communications links may be employed, such as the Internet, a local area network, a wide area network, or a point-to-point dial-up connection.

The security system may use various computing systems or devices, including personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, electronic game consoles, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. The security system may also provide its services to various computing systems, such as personal computers, cell phones, personal digital assistants, consumer electronics, home automation devices, and so on.

The security system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.

FIG. 2 is a block diagram illustrating how security compliance can be determined using the security system in some embodiments. The security system 200 includes various components that produce results based on compliance checks and remediation actions. The security system may employ one or more compliance templates 202. A compliance template can be a collection of compliance documents. A compliance application 204 can receive one or more compliance templates and may produce one or more compliance documents 206. The compliance application may then provide the compliance documents to a compliance evaluator component 208. The compliance evaluator component may then employ the API provided by the provider interface to interact with provider components indicated by the compliance documents. The compliance evaluator may then provide results 210 to the compliance application 204. As an example, the compliance evaluator may produce an intermediate compliance report that indicates which compliance criteria specified in compliance documents are not satisfied. The security system may employ a report generator component that employs the intermediate compliance report to produce a compliance report that the compliance application employs, such as to produce a report for a user. In some embodiments, the compliance report can be provided to the user directly.

FIG. 3 is a block diagram illustrating operation of the security system 300 in some embodiments. As described above, a provider interface component 302 can interact with one or more provider components, such as a registry provider component 304, a file system provider component 306, a services provider component 308, a firewall provider component 310, a Windows security provider component (LSAS) 312, an instrumentation provider component (WMI) 314, and so forth. A compliance evaluator component 316 may interact with the provider interface component 302. As an example, the compliance evaluator component may receive a compliance document 318 and interact with the provider interface component to request one or more providers indicated by the compliance document to determine whether OS components associated with the providers comply with portions of security policies indicated by the compliance document. The compliance evaluator component may then generate an intermediate compliance report 320. The intermediate compliance report may list the results each provider component reports. A remediation calculator component 322 and/or a report generator component 324 may employ that intermediate compliance report to produce reports. The remediation calculator component can employ the intermediate compliance report 320 and the compliance document 322 to generate a set of remediation actions 326. The remediation actions may indicate what actions various providers need to undertake to bring the computer system into compliance with portions of the security policies indicated by the compliance document. A remediator component 328 may employ the remediation actions to interact via the provider interface with one or more provider components to cause OS components to comply with security policies. The remediator component 328 may produce remediation results 330 that indicate whether or not the remediation actions were successfully applied. The report generator component 324 employs the compliance document 318, remediation actions 326, and remediation results 330 to produce a compliance report 332 and a change log 334. The compliance report 332 can be provided to various applications, e.g., compliance applications, such as to produce results that a system administrator can analyze. The compliance report may be in a human-readable format. The change log 334 can indicate what changes the security system made based on the compliance document 318. As an example, the change log may be added to a system event log.

FIG. 4 is a flow diagram illustrating a verify_compliance routine invoked by the security system in some embodiments. The routine 400 may be invoked by an application, such as a compliance application. The routine begins at block 402. At block 404, the routine receives a compliance document. The compliance document can be created by an administrator, such as by employing a compliance application, or can be produced automatically, such as by a system administration tool. At decision block 406, the routine determines whether the document is compatible with the security system. As an example, the security system may support a native document format. When the document is compatible, the routine continues at decision block 408.

At decision block 408, the routine determines whether a document schema associated with the compliance document is valid. If the document schema is valid, the routine continues at block 410. Otherwise, the routine returns an error at block 412. At block 410, the routine invokes a check_compliance subroutine to determine whether the computer system complies with portions of security policies indicated by the compliance document. The check_compliance subroutine is described in further detail below in relation to FIG. 6. The routine then returns at block 414.

At decision block 416, the routine determines whether the received compliance document can be converted. As an example, the security system may receive an XCCDF document and can convert the XCCDF document to a native document format. If the document can be converted, the routine continues at block 418. Otherwise, the routine returns an error at block 420. At block 418, the routine invokes a convert_document subroutine to convert the received document. The convert_document subroutine is described in further detail below in relation to FIG. 5. The routine then continues at division block 408.

Those skilled in the art will appreciate that the logic illustrated in FIG. 4 and described above, and in each of the flow diagrams discussed below, may be altered in various ways. For example, the order of the logic may be rearranged, substeps may be performed in parallel, illustrated logic may be omitted, other logic may be included, etc.

FIG. 5 is a flow diagram illustrating a convert_document routine invoked by the security system in some embodiments. The routine 500 begins at block 502. At block 504, the routine receives an indication of an XCCDF document. In various embodiments, the routine may receive indications of other types of documents. The indication can be a location from which the file can be loaded. At block 506, the routine loads the XCCDF document. As an example, the routine may load the document from the location indicated at block 504. At block 508, the routine converts the loaded XCCDF document to a native document format. As an example, the routine may employ a transformation indicated in XML to transform the XCCDF document to a native document format. At block 510, the routine stores the converted document. In various embodiments, the routine may provide an indication of the stored document to the routine that invoked the convert_document routine. The routine returns at block 512.

FIG. 6 is a flow diagram illustrating a check_compliance routine invoked by the security system in some embodiments. The routine 600 begins at block 602. At block 604, the routine loads a compliance document. At block 606, the routine identifies the next provider indicated by the compliance document. At decision block 608, the routine determines whether a provider could be identified at block 606. As an example, when all indicated providers have been processed, a provider may not be identifiable. If no provider could be identified, the routine continues at block 614, where it returns. Otherwise, if a provider was identified, the routine continues at block 610. At block 610, the routine determines whether the OS component associated with the identified provider is in compliance with security policies indicated by the loaded compliance document. At block 612, the routine adds results generated by the identified provider to an intermediate compliance report. The routine then continues at block 606.

FIG. 7 is a flow diagram illustrating a compute_remediations routine invoked by the security system in some embodiments. The routine 700 may be invoked by a remediation calculator component. The routine begins at block 702. At block 704, the routine receives an intermediate compliance report. As an example, the routine may receive an intermediate compliance report that is produced by a compliance evaluator. At block 706, the routine determines remediation actions based on the compliance report. As an example, the compliance document may indicate what remediation actions to undertake when a provider indicates that an OS component with which the provider is associated is not in compliance. At block 708, the routine invokes a remediate subroutine to bring the computer system into compliance with the portions of the security policies indicated by a compliance document. The remediate subroutine is described in further detail below in relation to FIG. 8. The routine then returns at block 710.

FIG. 8 is a flow diagram illustrating a remediate routine invoked by the security system in some embodiments. The routine 800 begins at block 802. At block 804, the routine receives a set of remediation actions. As an example, the routine may receive a set of remediation actions that are emitted by a remediation calculator. At block 806, the routine identifies the next provider indicated by the remediation actions. At decision block 808, the routine determines whether a provider was identified. As an example, when all remediation actions have been processed, no provider may be identifiable. If no provider was identified, the routine continues at block 814, where it returns. Otherwise, when a provider was identified, the routine continues at block 810. At block 810, the routine remediates using the identified provider. As an example, the routine may invoke the provider interface to provide an action to the identified provider. The routine may cause the identified provider to bring the OS component associated with the identified provider into compliance. At block 812, the routine adds results provided by the identified provider to a remediation results report. The routine then continues at block 806.

FIG. 9 is a flow diagram illustrating a generate_report routine invoked by the security system in some embodiments. The routine 900 may be invoked by a report generator component to generate a report. The routine begins at block 902. At block 904, the routine receives an intermediate compliance report, such as an intermediate compliance report generated by a compliance evaluator component. At block 906, the routine receives a set of remediation actions, such as remediation actions generated by a remediation calculator component. At block 908, the routine receives remediation results, such as remediation results generated by a remediator component after providing the remediation actions to provider components. At block 910, the routine produces a compliance report. At block 912, the routine produces a change log. At block 914, the routine returns.

Examples of compliance documents will now be provided. Table 1 illustrates portions of a registry compliance document.

TABLE 1 <AppInstallCheck id=”CheckForAntiVirusSoftware”>   <Check description=”Check if the necessary anti-virus software is installed” severity=”1”>    <Product Name=”VirusChecker” Vendor=”Software Company”>     <InstallPath>%ProgramFiles%\SoftwareCompany\VirusChecker</InstallPath>     <Version major=”2” minor=”7” versionmatch=”Exact”>    </Product>   </Check>   <Remediation description=”Go to product site to install virus checker” waitforuserconsent=”no”   rebootrequired=”maybe”>     <FixLocation>http://www.softwarecompany.org/viruschecker/install</FixLocation>   </Remediation> </AppInstallCheck> <AntiVirusCheck id=”CheckForAVSignatureUpdateStatus”>   <Check description=”Check if AV signatures are up to date” severity=”1”>     <SignaturesUptoDate graceperiod=”0”>True</SignaturesUptoDate>   </Check>   <Remediation description=”Run AV update program to update signatures” waitforuserconsent=”no” rebootrequired=”no”>     <Command>%ProgramFiles\SoftwareCompany\VirusChecker\updatesigs.exe</Command>   </Remediation> </AntiVirusCheck> <AppInstallCheck id=”CheckForAntiSpyware”>   <Check description=”Check if the necessary anti-spyware software is installed” severity=”1”>    <Product Name=”Windows Defender” Vendor=”Microsoft Corp.”>     <InstallPath>%ProgramFiles%\Windows Defender</InstallPath>     <Version major=”6” minor=”0” versionmatch=”Minimum”>    </Product>   </Check>   <Remediation description=”Go to product site to install Windows Defender” waitforuserconsent=”no”   rebootrequired=”maybe”>     <FixLocation>http://www.microsoft.com/security</FixLocation>   </Remediation> </AppInstallCheck> <AntiVirusCheck id=”CheckForASSignatureUpdateStatus”>   <Check description=”Check if Anti-Spyware signatures are up to date” severity=”1”>     <SignaturesUptoDate graceperiod=”2”>True</SignaturesUptoDate>   </Check>   <Remediation description=”Update Defender signatures through Windows Update” waitforuserconsent=”no” rebootrequired=”no”>     <Command>WindowsUpdate product=”Windows Defender” version=”1.1.1505”</Command>   </Remediation> </AntiVirusCheck> The example compliance document illustrated in Table 1 describes compliance and remediation actions for two providers: an anti-virus provider and an anti-spyware provider. The following describes elements of the example compliance document, though other elements are also possible. The security system may determine whether the computer system's registry complies with security policies described by the example compliance document and may take specified remediation actions. According to the example compliance document, each provider has a header element and a footer element. The header element can specify a type of provider. As examples, provider header 1 specifies “anti-virus” and provider header 2 specifies “anti-spyware.” Each provider can include elements, such as elements relating to installation configuration, process state configuration, and signature version configuration. The installation configuration element associated with the anti-virus provider indicates that the security system is to check whether version 7.1 of a software product named “VirusChecker” that is produced by “Software Company” is installed. The process state configuration element indicates to check that the process is running. When the process is not running, the remediation action is to issue a “sc start viruschecker” command that starts the viruschecker service. The signature version configuration checks the digital signature on executable files that provide the viruschecker service to ensure that the signature version is 23.73.107. If the computer system does not have that version of the executable files, the remediation action indicates to copy files from a specified location. The compliance document may not have all of the illustrated elements or may have other elements.

Although the example compliance document illustrated in Table 1 indicates two providers, additional providers can also be indicated.

In some embodiments, the security system may provide a “PerformComplianceScan” method that receives the location of a compliance document, the location at which to store a compliance report, and the location of a log (e.g., change log). When invoked, the method may check compliance of a computer system and remediate its configuration state based on the compliance document. The method may also generate a compliance report and add indications of configuration changes to the log. In some embodiments, the method additionally receives an identifier of a computer system so that the identified computer system can be analyzed and remediated. In some embodiments, the method may check compliance but not perform remediation.

In some embodiments, the security system may provide a “PerformRemediation” method that can accept parameters that are similar to the parameters accepted by the “PerformComplianceScan” method. This method may remediate computer systems based on remediation actions specified in the compliance document.

A provider interface component may provide the “PerformComplianceScan” and “Perform Remediation” methods as a part of its API. A provider component may provide an “ExecuteChecks” method and a “PerformRemediation” method.

The “ExecuteChecks” method may receive a set of “check” elements from a compliance document and may provide a set of results corresponding to the indicated check criteria. When invoked, the “ExecuteChecks” method may check associated OS components. The “PerformRemediation” method may receive a set of remediation actions and may cause associated OS components to change their configuration accordingly.

In some embodiments, the security system may recommend remediation actions. As an example, an XCCDF or a compliance document specified in a non-native document format may indicate security policies or compliance criteria, but not specify remediation actions. The security system may be able to recommend remediation actions based on the security policies or compliance criteria.

Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. Accordingly, the invention is not limited except as by the appended claims. 

1. A method performed by a computer system for causing an analyzed computer system to comply with a security policy, comprising: receiving a compliance document, the compliance document indicating a compliance criterion and a remediation action, the remediation action indicating an action that the analyzed computer system is to undertake when the analyzed computer system does not comply with the compliance criterion; determining whether the compliance criterion is satisfied; and when the compliance criterion is not satisfied, causing the computer system to undertake the remediation action so that the computer system complies with the security policy.
 2. The method of claim 1 further comprising generating a compliance report indicating an operating system component that caused the compliance criterion not to be satisfied.
 3. The method of claim 1 further comprising generating a change log indicating a configuration state change made to the computer system by undertaking the remediation action.
 4. The method of claim 1 further comprising receiving, from a compliance application running under a user account, via a common provider interface, an indication to check compliance of the computer system and checking compliance of the computer system even though the user account does not have sufficient privileges to check compliance.
 5. The method of claim 1 further comprising receiving via a common provider interface an indication to check compliance of the computer system and invoking a method of a provider component to check compliance wherein the provider component is associated with an operating system component whose compliance is to be checked.
 6. The method of claim 1 further comprising receiving via a common provider interface an indication to remediate the computer system and invoking a method of a provider component to remediate wherein the provider component is associated with an operating system component that undergoes a remediation action.
 7. The method of claim 1 further comprising receiving via a common provider interface an indication to remediate the computer system.
 8. The method of claim 1 further comprising computing a remediation action based on a difference between a compliance document and an intermediate compliance report wherein the intermediate compliance report is generated after evaluating the compliance criterion.
 9. The method of claim 1 further comprising converting the compliance document from a XCCDF format to a native format and recommending a remediation action based on a compliance criterion specified in the XCCDF document.
 10. A computer-readable medium storing computer-executable instructions that, when executed, cause a computer system to perform a method for causing an analyzed computer system to comply with a security policy, the method comprising: receiving a compliance template, the compliance template having multiple compliance documents, at least one of the compliance documents indicating a compliance criterion and a remediation action; providing the compliance criterion to a first provider component, the first provider component associated with a first operating system component and exposing a first programming interface wherein the first programming interface is common to a second provider component, the second provider component associated with a second operating system component, wherein the first provider component and the second provider component are not the same provider component; receiving from the first provider component an indication of whether the compliance criterion is satisfied; and when the compliance criterion is not satisfied, performing the remediation action.
 11. The computer-readable medium of claim 10 further comprising instructions for causing the first operating system component to undergo a remediation action when the compliance criterion is not satisfied wherein the compliance criterion and remediation action are specified using a human-readable language.
 12. The computer-readable medium of claim 10 further comprising instructions for causing the first operating system component to undergo a remediation action when the compliance criterion is not satisfied, the remediation action specified in the compliance document and indicating the compliance criterion and the remediation action.
 13. The computer-readable medium of claim 10 further comprising instructions for determining whether another computer system complies with the security policy.
 14. The computer-readable medium of claim 10 further comprising instructions for providing a second compliance criterion to the second provider component, receiving from the second provider component an indication of whether the second compliance criterion is satisfied, and generating a compliance report indicating both whether the compliance criterion is satisfied and whether the second compliance criterion is satisfied.
 15. The computer-readable medium of claim 10 further comprising instructions for generating a compliance document.
 16. The computer-readable medium of claim 10 wherein when the compliance criterion is not satisfied, employing the programming interface of the second provider component to cause the second operating system component to undergo a remediation action specified in the compliance document indicating the remediation action.
 17. A system for causing an analyzed computer system to analyze or comply with a security policy, comprising: a first provider component associated with a first operating system component and exposing a first programming interface; a second provider component associated with a second operating system component and exposing a second programming interface; and a common provider interface component that receives a compliance criterion indicated in a compliance document, the compliance document specifying at least a portion of a security policy, and employs the first programming interface to determine whether the first operating system component satisfies the compliance criterion.
 18. The system of claim 17 further comprising a remediation calculator component that identifies a remediation action that the first operating system component is to undergo to place the computer system in compliance with the portion of the security policy.
 19. The system of claim 17 further comprising a remediation calculator component that identifies a remediation action that the second operating system component is to undergo to place the computer system in compliance with the portion of the security policy and a remediator component that provides the identified remediation action to the second operating system component.
 20. The system of claim 17 further comprising a remediation calculator component that identifies a remediation action that a specified operating system component is to undergo to place the computer system in compliance with the portion of the security policy, a remediator component that provides the identified remediation action to the specified operating system component, and a report generator component that generates a compliance report that indicates whether the compliance criterion is satisfied. 